Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Force explicit encoding/decoding of arguments and return values to calls to Erlang #194

Open
wants to merge 17 commits into
base: develop
Choose a base branch
from

Conversation

rvirding
Copy link
Owner

NOTE that this branch is still experimental and probably needs working on.

rvirding and others added 10 commits October 28, 2024 02:34
We go very explicit here and assume that all Luerl functions require
their arugments to be explicitly encoded and return values
decoded. This is still a test version.
Also commented out some test output.
So luerl_new has now become the luerl. For backwards compatibility
save the old luerl unchanged as luerl_old. The documentation and test
suites have updated as well. A major change in luerl is the
encoding/decoding of functions which are assumed to use encoded
arguments and return values.
These just call the erlang module functions moving the state to the
first argument.
Fix tests on develop-encode
Adds an API that allows a consumer of Luerl to store private data that
can be retrieved from functions called within Lua. This is useful in
applications that may need to retrieve secrets from within Luerl, but
don't want Lua scripts to be able to access these values.

I've chatted with a number of users of Luerl, including Sam Aaron, who
have had the need to expose secrets into their Luerl programs. Some have
achieved this by using closures to close over private data and expose
those functions to Luerl. I have used the process dictionary to acheive
the same thing.

If Luerl had an API to store and retrieve private data, as proposed by
this PR, then both techniques would be unnecessary.

Provide a `update_private/2` function instead that takes a function that
can modify the private map

- [ ] Get a nod from Robert
- [ ] Implement in other "Elixir" API
- [ ] Decide if we need to implement for "old"
- [ ] Tests
- [ ] Documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants